Field of the Invention
The present invention relates to software versioning and more particularly to deploying different versions of a computer program to different end users.
Description of the Related Art
Traditional software deployment refers to the development and distribution of a computer program that provides one or more functional features upon execution in the memory of a computer. As different functional features are developed, new versions of same computer program are deployed, either as an upgrade for an existing end user or a new purchase for a new or existing end user. At any given moment, the developer distributes only a single, most recent version of the computer program, though prior versions of the computer program remain deployed for existing end users.
Oftentimes, it is desirable to deploy multiple different versions of the same computer program at the same time, each of the versions incorporating a different selection of functional features. In many instances, a basic and advanced version of the same computer program is provided, the cost of both versions varying according to the number and nature of the selection of the functional features. To deploy multiple versions of the same computer program, however, requires multiple different builds of the same computer based upon a single code base.
To address the complexity and inefficiency of deploying multiple different versions of the same computer program, developers build a single deployable computer program with certain functions disabled. Responsive to internal programmatic directives, different ones of the functional features can be enabled or disabled so as to customize the set of functional features. Thus, essentially different versions of the computer program may exist with but a single deployed computer program. Consequently, the size of the executable computer program can be massive in that all possible functional features must be present in the executable object at run-time irrespective of the number of features ultimately selected for use by the end user.